// User type for order user info
interface User {
    id: number;
    openid: string;
    phone: string;
    gender: string;
    unionid: null | string;
    nickname: string;
    avatarUrl: string;
    city: null | string;
    country: null | string;
    province: null | string;
    is_blacklisted: number;
    is_store: number;
    sex: string;
    created_at: string;
    updated_at: string;
}

// Print params type
interface PrintParams {
    deviceId: string;
    deviceKey: string;
    devicePort: number;
    dmColor: number;
    dmCopies: number;
    dmDefaultSource: number;
    dmDuplex: number;
    dmOrientation: number;
    dmPaperSize: number;
    ext: string;
    isPreview: number;
    jobFile: string;
    jpAutoAlign: string;
    jpAutoRotate: number;
    jpAutoScale: number;
    jpPageRange: string;
    jpScale: string;
    page: number;
    pdfKernel: string;
    printerModel: string;
    reportDeviceStatus: number;
    reportPrinterStatus: number;
    taskTicket: string;
}

// Order item type
interface OrderItem {
    id: number;
    order_number: string;
    transaction_id: string;
    agent_id: null | number;
    agent_profit_price: string;
    amount: string;
    color: number;
    copies: number;
    created_at: string;
    duplex: number;
    ext: string;
    files: string;
    machine_id: number;
    page: number;
    paper_count: number;
    paper_size: number;
    params: PrintParams;
    print_remark: null | string;
    print_status: number;
    printed_at: string;
    printer_id: number;
    profit_price: string;
    service_price: string;
    status: number;
    store_id: number;
    task_id: string;
    total_amount: string;
    uid: number;
    updated_at: string;
    user: User;
}

// Income object type
interface IncomeObj {
    withdrawals_amount: string;
    pending_price: string;
    total_amount: string;
    amount: string;
}

// Withdrawal item type
interface WithdrawalItem {
    id: number;
    user_id: number;
    store_id: number;
    agent_id: null | number;
    amount: string;
    status: number;
    type: number;
    created_at: string;
    updated_at: string;
}

export type { OrderItem, IncomeObj, WithdrawalItem }
